#ifndef _SYS_WEEKDAY_H_
#define _SYS_WEEKDAY_H_

#include "Enum.h"
#include "SysTypes.h"

#define WEEKDAY_VTABLE(self)   ((WeekdayVTable*)((FanObj*)self)->vtable)


extern Type*    Weekday_classType;
extern VTable*  Weekday_classVTable;


/* [sys::Weekday] Attributes */
struct Weekday
{
  Enum          super;
};


/* [sys::Weekday] Virtual-table */
typedef struct WeekdayVTable
{
  EnumVTable    super;
} WeekdayVTable;


/* [sys::Weekday] Methods and fields */
Weekday*        Weekday_sun(void);
Weekday*        Weekday_mon(void);
Weekday*        Weekday_tue(void);
Weekday*        Weekday_wed(void);
Weekday*        Weekday_thu(void);
Weekday*        Weekday_fri(void);
Weekday*        Weekday_sat(void);
List*           Weekday_vals(void);
Weekday*        Weekday_increment(Weekday* self);
Weekday*        Weekday_decrement(Weekday* self);
Str*            Weekday_toLocale_0(Weekday* self);
Str*            Weekday_toLocale(Weekday* self, Str* pattern);
Str*            Weekday_localeAbbr(Weekday* self);
Str*            Weekday_localeFull(Weekday* self);
Weekday*        Weekday_localeStartOfWeek(void);
List*           Weekday_localeVals(void);
Weekday*        Weekday_fromStr_1(Str* name);
Weekday*        Weekday_fromStr(Str* name, Bool checked);


/* [sys::Weekday] Type-system functions */
Type*           Weekday_initType(void);
VTable*         Weekday_initVTable(void);
void            Weekday_initStatic(void);


#endif
